package com.xintai.sparepart.purchase.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Random;

import com.xintai.common.utils.SecurityUtils;
import com.xintai.sparepart.purchase.domain.BeiPurchaseFile;
import com.xintai.sparepart.purchase.domain.BeiPurchaseItem;
import com.xintai.sparepart.purchase.mapper.BeiPurchaseFileMapper;
import com.xintai.sparepart.purchase.mapper.BeiPurchaseItemMapper;
import org.springframework.stereotype.Service;
import com.xintai.sparepart.purchase.mapper.BeiPurchaseMapper;
import com.xintai.sparepart.purchase.domain.BeiPurchase;
import com.xintai.sparepart.purchase.service.IBeiPurchaseService;

import javax.annotation.Resource;

/**
 * 采购申请主Service业务层处理
 *
 * @author xintai
 * @date 2021-02-20
 */
@Service
public class BeiPurchaseServiceImpl implements IBeiPurchaseService
{
    @Resource
    private BeiPurchaseMapper beiPurchaseMapper;
    @Resource
    private BeiPurchaseItemMapper beiPurchaseItemMapper;
    @Resource
    private BeiPurchaseFileMapper beiPurchaseFileMapper;
    /**
     * 查询采购申请主
     *
     * @param beiId 采购申请主ID
     * @return 采购申请主
     */
    @Override
    public BeiPurchase selectBeiPurchaseById(Long beiId)
    {
        BeiPurchase beiPurchase = beiPurchaseMapper.selectBeiPurchaseById(beiId);
        return beiPurchase;
    }

    /**
     * 查询采购申请主列表
     *
     * @param beiPurchase 采购申请主
     * @return 采购申请主
     */
    @Override
    public List<BeiPurchase> selectBeiPurchaseList(BeiPurchase beiPurchase)
    {
        return beiPurchaseMapper.selectBeiPurchaseList(beiPurchase);
    }

    /**
     * 新增采购申请主
     *
     * @param beiPurchase 采购申请主
     * @return 结果
     */
    @Override
    public int insertBeiPurchase(BeiPurchase beiPurchase)
    {
        //获取采购申请
        Random random = new Random();
        //生成5个 0到100之间的数字。
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("CG");
        System.out.println("生成5个 0到100之间的数字。 nextInt(100)");
        for (int n = 0; n < 4; n++) {
            stringBuffer.append(random.nextInt(100));
        }
        int i1=0;
        int i2=0;
        beiPurchase.setBeiCode(String.valueOf(stringBuffer));
        beiPurchase.setUserId(SecurityUtils.getLoginUser().getUser().getUserId());
        beiPurchase.setBeiTime(new Date());
        int i= beiPurchaseMapper.insertBeiPurchase(beiPurchase);
        Long beiId = beiPurchase.getBeiId();

        //获取采购明细
        if (beiPurchase.getBeiPurchaseItems()!=null){
            List<BeiPurchaseItem> beiPurchaseItems = beiPurchase.getBeiPurchaseItems();
            for (BeiPurchaseItem beiPurchaseItem : beiPurchaseItems) {
                beiPurchaseItem.setPurchaseId(beiId);
                i1 = beiPurchaseItemMapper.insertBeiPurchaseItem(beiPurchaseItem);
            }
        }

        //获取采购附件文件
        if (beiPurchase.getBeiPurchaseFiles()!=null) {
            List<BeiPurchaseFile> beiPurchaseFiles = beiPurchase.getBeiPurchaseFiles();
            for (BeiPurchaseFile beiPurchaseFile : beiPurchaseFiles) {
                beiPurchaseFile.setPurchaseId(beiId);
                i2 = beiPurchaseFileMapper.insertBeiPurchaseFile(beiPurchaseFile);
            }
        }
        int succeed = 0;
        if (i>0&&i1>0&&i2>0){
            succeed = i;
        }

        return succeed;
    }

    /**
     * 修改采购申请主
     *
     * @param beiPurchase 采购申请主
     * @return 结果
     */
    @Override
    public int updateBeiPurchase(BeiPurchase beiPurchase)
    {
        List<BeiPurchaseFile> beiPurchaseFiles = beiPurchase.getBeiPurchaseFiles();
        List<BeiPurchaseItem> beiPurchaseItems = beiPurchase.getBeiPurchaseItems();
        for (BeiPurchaseItem beiPurchaseItem : beiPurchaseItems) {
            if (beiPurchaseItem.getStatus()!=1){
                beiPurchaseItemMapper.updateBeiPurchaseItem(beiPurchaseItem);
            }else {
                beiPurchaseItemMapper.deleteBeiPurchaseItemById(beiPurchaseItem.getBeiId());
            }
        }
        return beiPurchaseMapper.updateBeiPurchase(beiPurchase);
    }

    /**
     * 批量删除采购申请主
     *
     * @param beiIds 需要删除的采购申请主ID
     * @return 结果
     */
    @Override
    public int deleteBeiPurchaseByIds(Long[] beiIds)
    {
        return beiPurchaseMapper.deleteBeiPurchaseByIds(beiIds);
    }

    /**
     * 删除采购申请主信息
     *
     * @param beiId 采购申请主ID
     * @return 结果
     */
    @Override
    public int deleteBeiPurchaseById(Long beiId)
    {
        return beiPurchaseMapper.deleteBeiPurchaseById(beiId);
    }


}
